﻿using System;
using System.Diagnostics;
using System.Windows;

namespace 组合模式
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    /// 简单对象和复合对象必须实现相同的接口
    /// 
    /// 简单对象和复合对象都可以调用Draw方法
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            var complexGraphics = new ComplexGraphics("一个复杂图形和两条线段组成的复杂图形");
            //线
            complexGraphics.Add(new Line("线段A"));
            //复杂图形
            var compositeCg = new ComplexGraphics("一个圆和一条线组成的复杂图形");
            compositeCg.Add(new Circle("圆"));
            compositeCg.Add(new Circle("线段B"));
            complexGraphics.Add(compositeCg);
            //线
         
            var l = new Line("线段C");
            complexGraphics.Add(l);
            l.Draw();
            Debug.WriteLine("=====================");
            //圆
            var c=new Circle("圆A");
            c.Draw();
            Debug.WriteLine("=====================");
            //复杂图形
            complexGraphics.Draw();

            Debug.WriteLine("=====================");
            // 移除一个组件再显示复杂图形的画法
            complexGraphics.Remove(l);

            complexGraphics.Draw();
        }
    }
}
